#include <func.h>
void handler(int sum)

{
    char cwd[4096] = {0};
    if (getcwd(cwd, sizeof(cwd)) != NULL)
    {
        printf("\nnCurrent directory: %s\n", cwd);
    }
    else
    {
        perror("getcwd()error");
    }
}

int main()
{

    char intput[4096] = {0};
    // 创建信号；
    struct sigaction sa;
    sa.sa_handler = handler;
    sa.sa_flags = 0;
    sigemptyset(&sa.sa_mask);
    sigaction(SIGINT, &sa, NULL);
    // 得到命令行；
    while (1)
    {

        // 显示当前工作目录；
        char cwd[1024] = {0};
        if (getcwd(cwd, sizeof(cwd)))
        {
            printf("%s$", cwd);
            fflush(stdout); 
        }
        // 读取输入1
        if (fgets(intput, sizeof(intput), stdin) == NULL)
        {
            break;
        }
        //读取输入；2
        // if(read(stdin,intput,sizeof(intput))==NULL)
        // {
            // break;
        // }
        //读取输入;3
        // if(fread(intput,sizeof(intput),4096,stdin)==NULL)
        // {
            break;
        // }
        // 预处理
        intput[strcspn(intput, "\n")] = 0; // 移除换行符；//intput[strlen(intput)-1] = 0;
        if (strcmp(intput, "exit") == 0)
        {
            break;
        }

        if (!fork())
        {
            char*argvector[100]= {0};
            argvector[0] = strtok(intput," ");
            int i = 1;
            while(1)
            {
                argvector[i] = strtok(NULL," ");
                if(argvector[i]==NULL)
                {
                    break;
                }
                ++i;
            }
          execv(argvector[0],argvector);//execlp(intput,intput,NULL);
            perror("exec failed");
            exit(1);
        }
        else
        {
            wait(0);
        }
    }
    return 0;
}